thread.func.php API参考文档
# thread.func.php API 参考文档
## 概述
`thread.func.php` 是 Xiuno BBS 的主题模型层,提供了主题的 CRUD 操作、列表查询、统计更新等核心功能。
## 原始 CURD 操作
### `thread__create()`
#### 说明
```php
function thread__create(array $arr): int|false
```
创建主题记录,最原生的插入操作,无关联其他数据。
#### 参数
- `$arr`: 要插入的主题数据数组,键为字段名,值为字段值
#### 返回值
- 成功返回插入的主题 ID
- 失败返回 FALSE
#### 示例
```php
$arr = array(
'fid' => 1,
'subject' => '测试主题',
'uid' => 1,
'create_date' => time(),
'last_date' => time(),
'firstpid' => 1,
'lastpid' => 1
);
$tid = thread__create($arr);
```
### `thread__update()`
#### 说明
```php
function thread__update(int $tid, array $arr): int|false
```
更新主题记录,最原生的更新操作。
#### 参数
- `$tid`: 主题 ID
- `$arr`: 要更新的数据数组
#### 返回值
- 成功返回受影响的行数
- 失败返回 FALSE
#### 示例
```php
$update = array('subject' => '新主题标题');
$r = thread__update(1, $update);
```
### `thread__read()`
#### 说明
```php
function thread__read(int $tid): array|false
```
读取主题记录,最原生的查询操作。
#### 参数
- `$tid`: 主题 ID
#### 返回值
- 成功返回主题数组
- 失败返回 FALSE
#### 示例
```php
$thread = thread__read(1);
```
### `thread__delete()`
#### 说明
```php
function thread__delete(int $tid): int|false
```
删除主题记录,最原生的删除操作。
#### 参数
- `$tid`: 主题 ID
#### 返回值
- 成功返回受影响的行数
- 失败返回 FALSE
#### 示例
```php
$r = thread__delete(1);
```
### `thread__find()`
#### 说明
```php
function thread__find(array $cond = array(), array $orderby = array(), int $page = 1, int $pagesize = 20): array
```
查找主题列表,最原生的查询操作。
#### 参数
- `$cond`: 条件数组
- `$orderby`: 排序数组
- `$page`: 页码
- `$pagesize`: 每页数量
#### 返回值
- 返回主题列表数组
#### 示例
```php
$threadlist = thread__find(array('fid' => 1), array('tid' => -1), 1, 20);
```
## 关联 CURD 操作
### `thread_create()`
#### 说明
```php
function thread_create(array $arr, int &$pid): int|false
```
创建主题,包含关联操作(如创建首帖、更新统计数据等)。
#### 参数
- `$arr`: 主题数据数组,包含 fid、uid、subject、message、time、longip、doctype 等字段
- `$pid`: 首帖 ID(引用传递)
#### 返回值
- 成功返回主题 ID
- 失败返回 FALSE
#### 示例
```php
$arr = array(
'fid' => 1,
'uid' => 1,
'subject' => '测试主题',
'message' => '测试内容',
'time' => time(),
'longip' => ip2long('127.0.0.1'),
'doctype' => 0
);
$pid = 0;
$tid = thread_create($arr, $pid);
```
### `thread_update()`
#### 说明
```php
function thread_update(int $tid, array $arr): int|false
```
更新主题,包含关联操作(如移动板块时更新统计数据)。
#### 参数
- `$tid`: 主题 ID
- `$arr`: 要更新的数据数组
#### 返回值
- 成功返回受影响的行数
- 失败返回 FALSE
#### 示例
```php
$update = array('subject' => '新主题标题');
$r = thread_update(1, $update);
```
### `thread_inc_views()`
#### 说明
```php
function thread_inc_views(int $tid, int $n = 1): bool
```
增加主题浏览次数。
#### 参数
- `$tid`: 主题 ID
- `$n`: 增加的次数,默认为 1
#### 返回值
- 成功返回 TRUE
- 失败返回 FALSE
#### 示例
```php
thread_inc_views(1);
```
### `thread_read()`
#### 说明
```php
function thread_read(int $tid): array
```
读取主题,包含数据格式化。
#### 参数
- `$tid`: 主题 ID
#### 返回值
- 返回格式化后的主题数组
#### 示例
```php
$thread = thread_read(1);
```
### `thread_read_cache()`
#### 说明
```php
function thread_read_cache(int $tid): array
```
从缓存中读取主题,避免重复从数据库取数据。
#### 参数
- `$tid`: 主题 ID
#### 返回值
- 返回主题数组
#### 示例
```php
$thread = thread_read_cache(1);
```
### `thread_delete()`
#### 说明
```php
function thread_delete(int $tid): bool
```
删除主题,包含清理关联数据(回帖、我的主题等)。
#### 参数
- `$tid`: 主题 ID
#### 返回值
- 成功返回 TRUE
- 失败返回 FALSE
#### 示例
```php
$r = thread_delete(1);
```
### `thread_find()`
#### 说明
```php
function thread_find(array $cond = array(), array $orderby = array(), int $page = 1, int $pagesize = 20): array
```
查找主题列表,包含数据格式化。
#### 参数
- `$cond`: 条件数组
- `$orderby`: 排序数组
- `$page`: 页码
- `$pagesize`: 每页数量
#### 返回值
- 返回格式化后的主题列表数组
#### 示例
```php
$threadlist = thread_find(array('fid' => 1), array('tid' => -1), 1, 20);
```
## 列表查询
### `thread__find_by_fid()`
#### 说明
```php
function thread__find_by_fid(int $fid, int $page = 1, int $pagesize = 20, string $order = 'lastpid'): array
```
按照板块查找主题列表,不包含置顶帖。
#### 参数
- `$fid`: 板块 ID
- `$page`: 页码
- `$pagesize`: 每页数量
- `$order`: 排序方式,'tid' 或 'lastpid'
#### 返回值
- 返回主题列表数组
#### 示例
```php
$threadlist = thread__find_by_fid(1, 1, 20, 'lastpid');
```
### `thread_find_by_fid()`
#### 说明
```php
function thread_find_by_fid(int $fid, int $page = 1, int $pagesize = 20, string $order = 'lastpid'): array
```
按照板块查找主题列表,包含置顶帖。
#### 参数
- `$fid`: 板块 ID
- `$page`: 页码
- `$pagesize`: 每页数量
- `$order`: 排序方式,'tid' 或 'lastpid'
#### 返回值
- 返回主题列表数组(包含置顶帖)
#### 示例
```php
$threadlist = thread_find_by_fid(1, 1, 20, 'lastpid');
```
### `thread_find_by_fids()`
#### 说明
```php
function thread_find_by_fids(array $fids, int $page = 1, int $pagesize = 20, string $order = 'lastpid', bool $threads = FALSE): array
```
从多个板块获取主题列表。
#### 参数
- `$fids`: 板块 ID 数组
- `$page`: 页码
- `$pagesize`: 每页数量
- `$order`: 排序方式
- `$threads`: 是否返回主题总数
#### 返回值
- 返回主题列表数组
#### 示例
```php
$threadlist = thread_find_by_fids(array(1, 2), 1, 20, 'lastpid');
```
### `thread_find_by_keyword()`
#### 说明
```php
function thread_find_by_keyword(string $keyword): array
```
通过关键词搜索主题。
#### 参数
- `$keyword`: 搜索关键词
#### 返回值
- 返回匹配的主题列表数组
#### 示例
```php
$threadlist = thread_find_by_keyword('测试');
```
### `thread_find_by_tids()`
#### 说明
```php
function thread_find_by_tids(array $tids, array $order = array()): array
```
根据多个主题 ID 查找主题。
#### 参数
- `$tids`: 主题 ID 数组
- `$order`: 排序数组
#### 返回值
- 返回主题列表数组
#### 示例
```php
$threadlist = thread_find_by_tids(array(1, 2, 3));
```
## 其他方法
### `thread_format()`
#### 说明
```php
function thread_format(array &$thread): void
```
格式化主题数据。
#### 参数
- `$thread`: 主题数组(引用传递)
#### 返回值
- 无返回值,直接修改传入的数组
#### 示例
```php
$thread = thread_read(1);
thread_format($thread);
```
### `thread_format_last_date()`
#### 说明
```php
function thread_format_last_date(array &$thread): void
```
格式化主题的最后回复时间。
#### 参数
- `$thread`: 主题数组(引用传递)
#### 返回值
- 无返回值,直接修改传入的数组
#### 示例
```php
$thread = thread_read(1);
thread_format_last_date($thread);
```
### `thread_count()`
#### 说明
```php
function thread_count(array $cond = array()): int|false
```
统计主题数量。
#### 参数
- `$cond`: 条件数组
#### 返回值
- 成功返回主题数量
- 失败返回 FALSE
#### 示例
```php
$count = thread_count(array('fid' => 1));
```
### `thread_maxid()`
#### 说明
```php
function thread_maxid(): int|false
```
获取主题最大 ID。
#### 参数
- 无参数
#### 返回值
- 成功返回最大主题 ID
- 失败返回 FALSE
#### 示例
```php
$maxid = thread_maxid();
```
### `thread_safe_info()`
#### 说明
```php
function thread_safe_info(array $thread): array
```
获取主题安全信息(移除敏感字段)。
#### 参数
- `$thread`: 主题数组
#### 返回值
- 返回移除敏感字段后的主题数组
#### 示例
```php
$safe_thread = thread_safe_info($thread);
```
### `thread_get_level()`
#### 说明
```php
function thread_get_level(int $n, array $levelarr): int
```
获取主题等级。
#### 参数
- `$n`: 主题数量
- `$levelarr`: 等级数组
#### 返回值
- 返回等级索引
#### 示例
```php
$level = thread_get_level(100, array(10, 50, 100, 500));
```
### `thread_list_access_filter()`
#### 说明
```php
function thread_list_access_filter(array &$threadlist, int $gid): void
```
对主题列表进行权限过滤。
#### 参数
- `$threadlist`: 主题列表数组(引用传递)
- `$gid`: 用户组 ID
#### 返回值
- 无返回值,直接修改传入的数组
#### 示例
```php
$threadlist = thread_find_by_fid(1);
thread_list_access_filter($threadlist, 2);
```
### `thread_find_lastpid()`
#### 说明
```php
function thread_find_lastpid(int $tid): int
```
查找主题的最后回帖 ID。
#### 参数
- `$tid`: 主题 ID
#### 返回值
- 返回最后回帖 ID
#### 示例
```php
$lastpid = thread_find_lastpid(1);
```
### `thread_update_last()`
#### 说明
```php
function thread_update_last(int $tid): bool
```
更新主题的最后回复信息。
#### 参数
- `$tid`: 主题 ID
#### 返回值
- 成功返回 TRUE
- 失败返回 FALSE
#### 示例
```php
thread_update_last(1);
```